home *** CD-ROM | disk | FTP | other *** search
- /*
- File: UseLib.cpp
-
- Contains: Utility class for loading & unloading libraries on-demand
-
- Owned by: Chris Linn
-
- Copyright: © 1993 - 1996 by Apple Computer, Inc., all rights reserved.
-
- Change History (most recent first):
-
- <1> 10/4/96 CSL first checked in
- */
-
- #ifndef __CODEFRAGMENTS__
- #include <CodeFragments.h>
- #endif
-
- #ifndef _EXCEPT_
- #include "Except.h"
- #endif
-
- #ifndef _ODDEBUG_
- #include "ODDebug.h"
- #endif
-
- #ifndef _PASCLSTR_
- #include "PasclStr.h"
- #endif
-
- #ifndef _USELIB_
- #include "UseLib.h"
- #endif
-
- CUsingLibrary::CUsingLibrary( Str63 libName )
- {
- Ptr main;
- Str255 errName;
-
- fConnectionID = 0;
- fErr = noErr;
-
- fErr = GetSharedLibrary( libName, kCurrentCFragArch, 1, &fConnectionID,
- &main, errName );
- #if ODDebug
- if ( fErr != noErr )
- {
- PascalToCString( errName );
- WARN( "GetSharedLibrary returned error %d '%s'", fErr, errName );
- }
- #endif
- }
-
- Ptr CUsingLibrary::GetEntry( Str255 entryName )
- {
- Ptr entry = NULL;
-
- if ( fErr != noErr )
- THROW( fErr );
-
- CFragSymbolClass symClass;
- fErr = FindSymbol( fConnectionID, entryName, &entry, &symClass );
- if ( fErr == noErr )
- WASSERT( symClass == kTVectorCFragSymbol );
- else
- {
- WARN( "Didn't find symbol %s", entryName );
- entry = NULL;
- THROW( fErr );
- }
- return entry;
- }
-
- CUsingLibrary::~CUsingLibrary()
- {
- if ( fConnectionID != 0 )
- {
- fErr = CloseConnection( &fConnectionID );
- fConnectionID = 0;
- WASSERT( fErr == noErr );
- }
- }
-
-
-